home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / C / ASAP / IClass.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-09-12  |  3.3 KB  |  74 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * AIClass wrapper class                                                     *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_IClass_H
  12. #define ASAP_IClass_H
  13.  
  14. #include <New.h>
  15.  
  16. extern "C"
  17. {
  18.  #include <Proto/Intuition.h>
  19. }
  20.  
  21. class AIClass : public IClass
  22. {
  23.  public:
  24.  inline void AddClass();
  25.  inline BOOL FreeClass();
  26.  inline void operator delete(void *classPtr);
  27.  inline static AIClass * MakeClass(const char *classID, const char *superClassID/*, IClass *superClassPtr*/, unsigned long instanceSize, unsigned long flags = 0);
  28.  inline void * operator new(size_t, const char *classID, const char *superClassID, unsigned long instanceSize, unsigned long flags = 0);
  29.  inline static AIClass * MakeClass(const char *classID/*, UBYTE *superClassID*/, IClass *superClassPtr, unsigned long instanceSize, unsigned long flags = 0);
  30.  inline void * operator new(size_t, const char *classID, IClass *superClassPtr, unsigned long instanceSize, unsigned long flags = 0);
  31.  inline void RemoveClass();
  32. };
  33. //-----------------------------------------------------------------------------
  34. void AIClass::AddClass ()
  35. {
  36.  ::AddClass(this);
  37. }
  38. //-----------------------------------------------------------------------------
  39. BOOL AIClass::FreeClass ()
  40. {
  41.  return ::FreeClass(this);
  42. }
  43. //-----------------------------------------------------------------------------
  44. void AIClass::operator delete (void *classPtr)
  45. {
  46.  ((AIClass *) classPtr)->FreeClass();
  47. }
  48. //-----------------------------------------------------------------------------
  49. AIClass * AIClass::MakeClass (const char *classID, const char *superClassID, unsigned long instanceSize, unsigned long flags)
  50. {
  51.  return (AIClass *) ::MakeClass((UBYTE *) classID, (UBYTE *) superClassID, NULL, instanceSize, flags);
  52. }
  53. //-----------------------------------------------------------------------------
  54. void * AIClass::operator new (size_t, const char *classID, const char *superClassID, unsigned long instanceSize, unsigned long flags)
  55. {
  56.  return AIClass::MakeClass(classID, superClassID, instanceSize, flags);
  57. }
  58. //-----------------------------------------------------------------------------
  59. AIClass * AIClass::MakeClass (const char *classID, IClass *superClassPtr, unsigned long instanceSize, unsigned long flags)
  60. {
  61.  return (AIClass *) ::MakeClass((UBYTE *) classID, NULL, superClassPtr, instanceSize, flags);
  62. }
  63. //-----------------------------------------------------------------------------
  64. void * AIClass::operator new (size_t, const char *classID, IClass *superClassPtr, unsigned long instanceSize, unsigned long flags)
  65. {
  66.  return AIClass::MakeClass(classID, superClassPtr, instanceSize, flags);
  67. }
  68. //-----------------------------------------------------------------------------
  69. void AIClass::RemoveClass ()
  70. {
  71.  ::RemoveClass(this);
  72. }
  73.  
  74. #endif